import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2022-04-29
 * Time: 13:26
 */
public class TestDemo {


    public static int func3(int[] array){
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < array.length; i++) {
            if (set.contains(array[i])){
                return array[i];
            }
            set.add(array[i]);
        }
        return 0;

    }

    public static void main(String[] args) { // 从10W个数据中找到第一个重复的数据
        int[] array = new int[1_0000];
        Random random = new Random(); // 随机生成函数
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(1000);
        }
        int set = func3(array);
        System.out.println(set);
    }



    public static Set<Integer> func2(int[] array){
        Set<Integer> set = new HashSet<>();
        for (int i = 0; i < array.length; i++) {
            set.add(array[i]);
        }
        return set;
    }

    public static void main4(String[] args) { // 将10W个数据去重
        int[] array = new int[1_0000];
        Random random = new Random(); // 随机生成函数
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(1000);
        }
        Set<Integer> set = func2(array);
        System.out.println(set);
    }


    public static Map<Integer,Integer> func1(int[] array){
        Map<Integer, Integer> map = new HashMap<>();
        // 判断array中的元素是否在map当中,如果不在就是1 在就在原来的基础上加1
        for (int x:array) {
            if (map.get(x) == null){
                map.put(x,1);
            }else {
                int val = map.get(x);
                map.put(x,val+1);
            }
        }
        return map;
    }

    public static void main3(String[] args) { // 给定100000个数据 统计出现的次数
        int[] array = new int[1_0000];
        Random random = new Random(); // 随机生成函数
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(1000);
        }
        Map<Integer, Integer> map = func1(array);
        System.out.println(map);
    }


    public static void main2(String[] args) {
        Set<Integer> set = new HashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);
        set.add(4);
        System.out.println(set); // 自动去重
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        } // 迭代器
    }

    public static void main1(String[] args) {// Map
        Map<String,Integer> map = new HashMap<>();
        map.put("abc",3);
        map.put("haha",2); // put就是往里面放元素
        map.put("hello",4); // put 存放元素的时候 key如果相同 val值会被覆盖
        map.put(null,null); // hashmap 是可以放null的 treemap不可以放null
        System.out.println(map);
        int ret = map.get("haha");
        System.out.println(ret); // 通过key来获取对应的val值
        System.out.println(map.getOrDefault("3",98));// 如果没有获取到 给一个默认值
        map.remove("abc");
        System.out.println(map);

        Set<String> set = map.keySet(); // set 存储的都是不重复的
        System.out.println(set); //返回所有的key

        Collection<Integer> comparable = map.values();
        System.out.println(comparable); // 获取所有的value值

        Set<Map.Entry<String, Integer>> set1 = map.entrySet();
        System.out.println(set1); // 将<String, Integer>看成一个整体 为Map.Entry 都放入Set
        for (Map.Entry<String,Integer> entry: map.entrySet()) {
            System.out.println(entry.getKey()+"->"+entry.getValue());
        }


    }
}
